﻿#define _CRT_SECURE_NO_WARNINGS 1
//判断是否为数字字符的库函数使用
//#include<stdio.h>
//
//int main()
//{
//	int c = '1';
//	if (isdigit(c))
//	{
//		printf("是数字字符\n");
//	}
//	else
//	{
//		printf("不是数字字符\n");
//	}
//	return 0;
//}

//写⼀个代码，将字符串中的⼩写字⺟转⼤写，其他字符不变
//#include<stdio.h>
//#include<string.h>
//
//int main()
//{
//	char str[] = "ab1cD3e6Fef";
//	int sz = strlen(str);
//	int i = 0;
//	for (i = 0; i < sz; i++)
//	{
//		if (islower(str[i]))
//		{
//			printf("%c", str[i] - 32);
//		}
//		else
//		{
//			printf("%c", str[i]);
//		}
//	}
//
//	return 0;
//}

//#include<stdio.h>
//#include<string.h>
//
//int main()
//{
//	char str[] = "ab1cD3e6Fef";
//	int sz = strlen(str);
//	int i = 0;
//	for (i = 0; i < sz; i++)
//	{
//		printf("%c", toupper(str[i]));
//	}
//
//	return 0;
//}

//strlen的模拟实现(递归方式)
//#include<stdio.h>
//#include<string.h>
//
//size_t my_strlen(const char* str)
//{
//	if (*str == '\0')
//		return 0;
//
//	return 1 + my_strlen(str + 1);
//}
//
//int main()
//{
//	char str[] = "abcdef";
//	size_t len = my_strlen(str);
//	printf("%zd\n", len);
//
//	return 0;
//}

//strcpy的使⽤和模拟实现
//#include<stdio.h>
//#include<string.h>
//
//int main()
//{
//	char str1[] = "abcdef";
//	char str2[20] = { 0 };
//	strcpy(str2, str1);
//	printf("%s\n", str2);
//
//	return 0;
//}

//#include<stdio.h>
//#include<string.h>
//
////模拟实现strcpy库函数
//char* my_strcpy(char* dest, char* src)
//{
//	char* ret = dest;
//	while (*dest++ = *src++)
//	{
//		;
//	}
//
//	return ret;
//}
//
//int main()
//{
//	char str1[] = "abcdef";
//	char str2[20] = "xxxxxxxxxxx";
//	my_strcpy(str2, str1);//strcpy拷贝字符串时会将'\0'也拷贝过去
//	printf("%s\n", str2);
//
//	return 0;
//}

//strcat的使⽤和模拟实现
#include<stdio.h>
#include<string.h>
#include<assert.h>

char* my_strcat(char* dest, const char* src)
{
	assert(dest && src);

	char* ret = dest;//记录目标的起始位置用于返回
	//dest找到'\0'的位置
	while (*dest != '\0')
	{
		dest++;
	}

	while (*dest++ = *src++)
	{
		;
	}

	return ret;
}

int main()
{
	char str1[20] = "hello \0xxxxxxxxx";//'\0'后面加多个'x'进行测试strcat是否会在末尾加'\0'
	char str2[] = "world";
	//在str1后面追加str2这个字符串
	//strcat(str1, str2);//结果证明strcat会在末尾加'\0'的
	my_strcat(str1, str2);
	printf("%s\n", str1);

	return 0;
}
